This invention relates, in general, to facilitating processing within a computing environment, and in particular, to managing accelerators of the computing environment.
Accelerators are used today to increase the processing capabilities of a server. In particular, accelerators coupled to the server are optimized to perform certain functions, enabling those functions to be performed at higher speeds than if those functions were performed by the server. When a function is reached in a program executed by the server, the server sends a request to an accelerator to perform the function. The accelerator performs the function and forwards the result back to the server. The server either performs further processing on the returned result or simply forwards the result to another accelerator, which then performs processing on the result and sends the result back to the server, again.
In production systems, typically all accelerators in a cluster of accelerators are powered up at the same time, even those accelerators that are not currently needed. Each accelerator has a plurality of power states associated therewith including, for instance, active, power down, stand-by and hibernate. Eventually, unused accelerators enter standby or hibernate mode. Then, when service for an accelerator in one of these modes is requested, the application is blocked until the accelerator completely wakes up.